package com.example.wantee;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.view.View;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class Busqueda extends Activity implements AsyncDelegate{

	private Context contexto;
	
	// flag for Internet connection status
    Boolean isInternetPresent = false;
    // Connection detector class
    ConnectionDetector cd;
    //Location
    Localizacion loc;
	
    AdaptadorListaSitios adaptador;
    
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_busqueda);
		contexto = this;
		
	    cd = new ConnectionDetector(getApplicationContext());
	    
        // Check if Internet present
        isInternetPresent = cd.isConnectingToInternet();
        if (!isInternetPresent) {
            // Internet Connection is not present
            Toast.makeText(contexto,"Internet Connection Error: Please connect to working Internet connection", Toast.LENGTH_LONG).show();
            // stop executing code by return
            return;
        }
 

        	
		ListView listaElecciones = (ListView) findViewById(R.id.ListaSitios);
		listaElecciones.setAdapter(adaptador);
		//Le quitamos las lineas que seperan los elementos
		listaElecciones.setDivider(null);
		listaElecciones.setSelector(R.drawable.selector_elecciones);
		listaElecciones.setDividerHeight(0);
        
        // Creamos la localizacion
        loc = new Localizacion(this);       
 
        // miramos si tenemos una localizacion
        if (loc.canGetLocation()) {
    		Bundle extras = this.getIntent().getExtras();
    		if(extras!=null && loc.getLatitude()!=0 && loc.getLongitude()!=0){
    			String tipo = extras.getString("tipo");
    			int id = extras.getInt("eleccion");
    			GestorPeticiones.getMiGestorPeticiones().buscarSitiosCercanos(contexto, tipo, loc.getLatitude(), loc.getLongitude(), this);
                //Toast.makeText(contexto,"Your Location: latitude:" + loc.getLatitude() + ", longitude: " + loc.getLongitude(), Toast.LENGTH_LONG).show();
    			
    			ImageView icono = (ImageView) findViewById(R.id.icon);
    			icono.setImageResource(GestorListaElecciones.getMiListaElecciones().getLista().get(id).getIcono());
    			TextView titulo = (TextView) findViewById(R.id.title);
    			titulo.setText(GestorListaElecciones.getMiListaElecciones().getLista().get(id).getTitulo());
    		}else{
                Toast.makeText(contexto,"Error Location: latitude:" + loc.getLatitude() + ", longitude: " + loc.getLongitude(), Toast.LENGTH_LONG).show();	
    		}
        }else{
            // Can't get user's current location
            Toast.makeText(contexto,"Couldn't get location information. Please enable GPS", Toast.LENGTH_LONG).show();
            // stop executing code by return
            return;
        }
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.busqueda, menu);
		return true;
	}

	@Override
	public void asyncComplete(boolean success) {
		if(success){
			//Se ha actualizado la lista con informacion del servidor por lo que debemos actualizar la lista que se visualiza
	 		actualizarLista();
		}else{
			TextView cargando = (TextView) findViewById(R.id.cargando);
			if(cargando!=null){
				cargando.setText("No ha habido resultados");
			}
		}
	}

	private void actualizarLista() {
		//Para asegurarnos que se actualiza volvemos a crear el adaptador y asignarselo
		adaptador = new AdaptadorListaSitios(getApplicationContext());
		ListView listaElecciones = (ListView) findViewById(R.id.ListaSitios);
		listaElecciones.setAdapter(adaptador);
		
		TextView cargando = (TextView) findViewById(R.id.cargando);
		if(cargando!=null){
			cargando.setVisibility(View.GONE);
		}		
	}
	
	
	@Override
	public void onBackPressed() {    
		finish();
		Busqueda.this.overridePendingTransition(R.anim.left_incoming, R.anim.left_outgoing);
	}

}
